package d6_tcp03;

import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

//核心思想:就是主线程负责接受每一个客户端,然后交给子线成进行处理接受信息
public class Client01 {
    public static void main(String[] args) throws Exception {
        //目标: Tcp客户端开发。实现支持多个客户端通信
        //1、创建socket对象,请求与服务器的socket管道连接
        Socket socket = new Socket("127.0.0.1", 8848);

        //2、从socket管道中得到一个字节输出流, 往外写数据出去
        OutputStream os = socket.getOutputStream();

        //3、把低级流管道包装成特殊数据输出流(可以输出,数据与数据类型)
        DataOutputStream dos = new DataOutputStream(os);

        //4、创建一个扫描器
        Scanner sc = new Scanner(System.in);
        //5、让用户可以反复发送数据
        while (true) {
            System.out.println("请说:");
            //6、提示用户进行输出
            String message = sc.next();
            //9、加一个退出机制
            if (message.equals("exit")){
                //9.1提示
                System.out.println("退出成功");
                //9.2关闭管道
                socket.close();
                //9.3退出循环
                break;
            }
            //7、发送数据出去到服务器
            dos.writeUTF(message);
            //8、进行刷新操作
            dos.flush();
        }
    }
}
